package br.ufrj.pesc.cassandra;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import br.com.gpetec.mom.domain.solr.documents.Documento;
import br.com.gpetec.mom.domain.solr.documents.Orientacao;
import br.ufrj.pesc.thallesrsm.ISearchHandler;

import com.datastax.driver.core.ResultSet;
import com.datastax.driver.core.Row;

public class SearchCassandraHandler extends SimpleCassandraClient implements ISearchHandler {

	public SearchCassandraHandler(){
		super();
	}
	public List<Documento> recuperaDocumentos(String queryString, Date de,
			Date ate) {


		return null;
	}

	public List<Documento> recuperaDocumentosTortaMencao(String nome,
			Date dataInicio, Date dataFim, List<String> fontes) {
		// TODO Auto-generated method stub
		return null;
	}

	public List<Documento> recuperaDocumentosTortaOpiniao(String nome,
			String orientacao, Date dataInicio, Date dataFim,
			List<String> fontes) {
		// TODO Auto-generated method stub
		return null;
	}

	public List<Documento> recuperaDocumentosLinhaOpiniao(String nome,
			Date data, String orientacao, List<String> fontes) {
		// TODO Auto-generated method stub
		return null;
	}

	public List<Documento> recuperaDocumentosLinhaMencao(String nome,
			Date data, List<String> fontes) {
		// TODO Auto-generated method stub
		return null;
	}

	public List<Documento> recuperaDocumentosTagCloud(String nome,
			String palavra, Date dataInicio, Date dataFim, List<String> fontes) {
		// TODO Auto-generated method stub
		return null;
	}

	public Documento recuperaDocumentoEntidade(String nome) {
		// TODO Auto-generated method stub
		return null;
	}

	public Map<String, Integer> recuperaTermos(String nome, Date dataInicio,
			Date dataFim, List<String> fontes) {
		// TODO Auto-generated method stub
		return null;
	}

	public List<Integer> recuperaMencoes(String nome, Date dataInicio,
			Date dataFim, List<String> fontes) {
		ArrayList<Integer> mencoesDia= new ArrayList<Integer>();
		Calendar calendario = Calendar.getInstance();
		calendario.setTime(dataInicio);
		while(calendario.getTimeInMillis()+300<dataFim.getTime()){
			//System.out.println(calendario.getTimeInMillis());
			//System.out.println(dataFim.getTime());
			int total=0;
			for(String fonte:fontes){
			//	System.out.println("select total from mencoespordataefonte where nomeEntidade='"+nome+"' and dia='"+calendario.getTimeInMillis()+"' and fonte='"+fonte+"'");
				String query = "select total from mencoespordataefonte where nomeEntidade='"+nome+"' and dia='"+calendario.getTimeInMillis()+"' and fonte='"+fonte+"'";
				ResultSet resultado;
				resultado = execute(query);
				Iterator<Row> it = resultado.iterator();
				while(it.hasNext())
					
				{
					total+=	it.next().getInt(0);
				}
				
			}
			mencoesDia.add(total);
			calendario.add(Calendar.DAY_OF_MONTH, 1);
		}
		return mencoesDia;
	}

	public Map<Orientacao, List<Integer>> recuperaOrientacao(String nome,
			Orientacao orientacao, Date dataInicio, Date dataFim,
			List<String> fontes) {
		// TODO Auto-generated method stub
		return null;
	}

	public Map<Orientacao, List<Double>> recuperaOrientacaoPonderada(
			String nome, Orientacao orientacao, Date dataInicio, Date dataFim,
			List<String> fontes) {
		// TODO Auto-generated method stub
		return null;
	}

}
